/***************************************************************************************************
*  File Name   : DataStructFramework_UserDefine.h                                                  *
*  Version No  : Ver 003                                                                           *
*  Description : This Header File created for user defining own list data type                     *
*  Author      : Tianyufang                                                                        *
*  Copyright   : Copyright (c) Tianyufang(personal).All Rights Reserved                            *
*  Creat Date  : 2012/09/25                                                                        *
*  Modify Date : 2012/11/09                                                                        *
*==================================================================================================*
*  No  Name        Date        Modify Content                                                      *
*  1   Tianyufang  2012/09/25  New                                                                 *
*  2   Tianyufang  2012/11/06  Add DSF_LINKED_LIST_MAX                                             *
*  3   Tianyufang  2012/11/09  Fixed wvdLinkedListSetNoProc                                        *
*                                                                                                  *
*==================================================================================================*/
#ifndef _DATASTRUCTFRAMEWORK_USERDEFINE_H_
#define _DATASTRUCTFRAMEWORK_USERDEFINE_H_
/*=================================================================================================*
*                                          Include Files                                           *
**=================================================================================================*/

/*=================================================================================================*
*                                          Section Define                                          *
**=================================================================================================*/

/*=================================================================================================*
*                                          Macro Define                                            *
**=================================================================================================*/
#define DSF_OPRT_OK		(1)
#define DSF_OPRT_NG		(0)

#define DSF_USERDEF_LIST_DATA stBookInfo
/* sample */
//#define DSF_LINKED_LIST_MAX	(1)

typedef enum
{
	LINKED_LIST_01,
	LINKED_LIST_02,
	LINKED_LIST_03,
	LINKED_LIST_04,
	LINKED_LIST_05,
	LINKED_LIST_06,
	LINKED_LIST_07,
}DSF_LINKED_LIST_NO;
/*=================================================================================================*
*                                           Type Define                                            *
**=================================================================================================*/
typedef struct
{
	int BookID;
	char BookName[10];
}stBookInfo;

/*=================================================================================================*
*                                          Struct Define                                           *
**=================================================================================================*/

/*=================================================================================================*
*                                          Globle Variable                                         *
**=================================================================================================*/

/*=================================================================================================*
*                                          Function Declaration                                    *
**=================================================================================================*/
extern uByte wvdLinkedListSetNoProc(uWord ListNo, uByte ListType);
#ifdef SINGLY_LINKED_LIST
extern void wvdSglLinkedListInitProc(void (*pfUserInitProc)(void), uWord ListNo);
extern uByte wubSglLinkedListCreatNode(DSF_USERDEF_LIST_DATA **pstDSFNode);
extern uByte wubSglLinkedListSeekNode(BOOL (*pfUserSeekProc)(DSF_USERDEF_LIST_DATA *), DSF_USERDEF_LIST_DATA **pstNodeData);
extern uByte wubSglLinkedListDeleteNode(BOOL (*pfUserDelProc)(DSF_USERDEF_LIST_DATA *), DSF_USERDEF_LIST_DATA *pstNodeData);
extern uByte wubSglLinkedListInsertNode(BOOL (*pfUserInsProc)(DSF_USERDEF_LIST_DATA *), DSF_USERDEF_LIST_DATA *pstNodeData);
extern uByte wubSglLinkedListModifyNode(BOOL (*pfUserModProc)(DSF_USERDEF_LIST_DATA *), DSF_USERDEF_LIST_DATA *pstNodeData);
extern uByte wubSglLinkedListGetNode(uInt uiNodeID, DSF_USERDEF_LIST_DATA **pstNodeData);
extern uInt  wuiSglLinkedListGetNodeTotalNum(void);
#endif

#endif
